﻿1. Подготовка системы.
Внимание: данная инструкция (включая сопутствуюшие файлы) расчитана на сборку в среде Windows 64-bit.

1.1 Установка архиватора 7z: http://www.7-zip.org/ 
(при написании инструкции использовался 7-Zip 9.20 64 bit X64, но скорее всего подойдёт любая версия)

1.2 Установка Visual Studio 2012. (Подойдёт даже бесплатная версия)
http://www.microsoft.com/ru-ru/download/details.aspx?id=34673
Установить обновление Visual Studio 2012 Update 4
http://www.microsoft.com/ru-ru/download/details.aspx?id=39305

1.3 Установка Perl(при написании инструкции использовался ActivePerl-5.16.3.1604-MSWin32-x86-298023.msi)
http://www.activestate.com/activeperl/downloads
Убедитесь что после установки Perl в PATH есть пути(у меня Perl был установлен на диск C:\) C:\Perl\site\bin;C:\Perl\bin;

1.4 Установка Python(подойдёт и 2 версия и 3 версия)(при написании инструкции использовался Python 3.3.3)
https://www.python.org/downloads/
Убедитесь что после установки Python в PATH есть путь до python.exe

1.5 Установка Nasm (при написании инструкции использовался nasm-2.07-installer.exe)
http://sourceforge.net/projects/nasm/files/latest/download
Убедитесь что после установки Nasm в PATH есть путь до Nasm.exe 

2. Построение зависимостей.
В инструкции все зависимости сохраняются в папку C:\MyProjects\Deps
Скопируйте папку build-helpers(находится в архиве с исходниками в папке MSVC) и вставьте в папку C:\MyProjects\Deps

2.1 OpenSSL 
-Скачайте http://www.openssl.org/source/openssl-1.0.2.tar.gz
-Распакуйте архив в папку C:\MyProjects\Deps
-Откройте командную строку Windows и выполните следующий код:

cd C:\MyProjects\Deps\build-helpers
buildopenssl.bat


2.2 Berkeley DB
-Скачайте http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz
-Распакуйте архив в папку C:\MyProjects\Deps
-Запустите Visual Studio 2012
-Откройте C:\MyProjects\Deps\db-6.0.20\build_windows\Berkeley_DB_vs2010.sln
-Выберете проект db
-Измените конфигурацию с Debug на Static Debug
-Нажмите правой кнопкой мыши на  проект db, затем в "Свойства" -> "Общие" убедитесь, что Набор символов "Использовать многобайтовую кодировку"
-Перейдите в "C/C++" -> "Препроцессор" -> "Определения препроцессора" и удалите _UNICODE и UNICODE, также убедитесь, что в Унаследованных значениях нет 
_UNICODE и UNICODE
-Нажмите правой кнопкой мыши на  проект db, затем "Только проект" -> "Построить только db"
-Постройте так все Static конфигурации(Static Debug 32 bit, Static Release 32 bit, Static Debug X64, Static Release X64)

Проверка:
Если вы всё сделали правильно то у вас будут файлы:
C:\MyProjects\Deps\db-6.0.20\build_windows\Win32\Static Release\libdb60s.lib
C:\MyProjects\Deps\db-6.0.20\build_windows\Win32\Static Debug\libdb60sd.lib
C:\MyProjects\Deps\db-6.0.20\build_windows\x64\Static Release\libdb60s.lib
C:\MyProjects\Deps\db-6.0.20\build_windows\x64\Static Debug\libdb60sd.lib

2.3 Boost
-Скачайте http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.7z/download
-Распакуйте boost_1_57_0.7z в папку C:\MyProjects\Deps
-Откройте командную строку Windows и выполните следующий код:

cd C:\MyProjects\Deps\build-helpers
buildboost.bat

2.4 qrencode
-Скачайте http://qrencode-win32.googlecode.com/archive/681f2ea7a41f919486d9932b3352a2e6920e1cb9.zip
-Распакуйте
-Откройте командную строку Windows и выполните следующий код:

cd C:\MyProjects\Deps\build-helpers
buildqrcode.bat

2.5 Qt 5
-Скачайте http://download.qt-project.org/official_releases/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.7z
-Распакуйте в C:\MyProjects\Deps
-Если вам нужна поддержка 64 bit, то переименуйте папку qt-everywhere-opensource-src-5.3.2 в qt-everywhere-opensource-src-5.3.2-64
(если вам нужна возможность строить и 32 bit и 64 bit бинарники, то у вас должны быть обе папки и qt-everywhere-opensource-src-5.3.2-64 и qt-everywhere-opensource-src-5.3.2 )
-Откройте командную строку Windows и выполните следующий код:

cd C:\MyProjects\Deps\build-helpers
buildqt32.bat 

или для 64 bit

cd C:\MyProjects\Deps\build-helpers
buildqt64.bat


3. Компиляция
Будем хранить исходники в папке C:\MyProjects

3.0 Подготовка Microsoft Visual Studio 2012 к работе
-Откройте Microsoft Visual Studio 2012
-Нажмите СЕРВИС -> Параметры.. -> Текстовый редактор -> Все языки -> Табуляция и поставьте флажок "Вставлять пробелы"
(Если у вас английская версия, то это выглядит так: Tools->Options->Text Editor->All Languages->Tabs и поставьте флажок "Insert Spaces" вместо "Keep Tabs".)

3.1 Скачиваем исходники
-Зайдите на сайт https://github.com/BioCoin-project/BioCoin 
-Нажмите Download ZIP
-Распакуйте BioCoin-master.zip в C:\MyProjects
-переименуйте BioCoin-master в BioCoin

3.2 Компиляция
-Откройте Microsoft Visual Studio 2012
-Откройте файл C:\MyProjects\BioCoin\MSVC\BioCoinSolution.sln
-Можете компилировать и BioCoinD и BioCoinQT 
(по-умолчанию выставлена компиляция с LevelDB, если вы хотите компилировать с BerkleyDB, то
-Выберете проект libcommon, перейдите в свойства -> С\С++ -> Препроцессор, удалите USE_LEVELDB
-Удалите из проекта libcommon libcommon -> Source Files -> txdb-leveldb.cpp и добавьте в проект
txdb-bdb.cpp
-Удалите из проекта libcommon libcommon -> Header Files -> txdb-leveldb.h и добавьте в проект
txdb-bdb.h
-Выберете проект BioCoinD, перейдите в свойства -> С\С++ -> Препроцессор, удалите USE_LEVELDB
-Выберете проект BioCoinQT, перейдите в свойства -> С\С++ -> Препроцессор, удалите USE_LEVELDB

Если вы хотите уменьшить размер бинарных файлов, то
1) Перейдите на сайт http://upx.sourceforge.net/#downloadupx
2) Скачайте программу в соответсвии с вашей системой
3) Распакуйте программу в папку с бинарными BioCoin файлами.
4) Введите в консоли
upx -9 BioCoinD.exe
затем
upx -9 BioCoinQT.exe

И ваши BioCoinD и BioCoinQT станут меньше ~ в 3 раза.
